package com.tianbao54.concurrent.queue;

import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;

/**
 * 一个基于链接节点的无界线程安全队列。此队列按照 FIFO（先进先出）原则对元素进行排序。队列的头部 是队列中时间最长的元素。
 * 队列的尾部 是队列中时间最短的元素。新的元素插入到队列的尾部，队列获取操作从队列头部获得元素。当多个线程共享访问一个公共
 * collection 时，ConcurrentLinkedQueue 是一个恰当的选择。此队列不允许使用 null 元素。System.out.println(queue.poll());
 * Thread safe.
 */
public class ConcurrentLinkedQueueTest {

    public static void main(String[] args) {

        Queue<String> queue = new ConcurrentLinkedQueue<>();

        queue.offer("zhangsan");
        queue.add("lisi");
        // not remove , get first
        System.out.println(queue.element());
        // not remove ,head of queue.
        System.out.println(queue.peek());
        // get and remove.
        System.out.println(queue.poll());
        System.out.println(queue.poll());
    }
}
